home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2010 April
/
PCWorld0410.iso
/
pluginy Firefox
/
2410
/
2410.xpi
/
chrome
/
content
/
foxmarks-setup.js
< prev
next >
Wrap
Text File
|
2010-01-28
|
17KB
|
552 lines
/*
Copyright 2005-2009 Xmarks Inc.
foxmarks-setup.js: implements behavior for the Xmarks Setup Wizard.
*/
var gIsEmpty;
var gHasProfiles;
var pProfileNames;
var gHelpUrl;
var gPasswordsNeedUpload = false;
var gWizardMode = "normal";
var gWizardForgotPassword = false;
function OnWizardCancel() {
if(gWizardMode == "normal"){
var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
.getService(Components.interfaces.nsIPromptService);
var checkResult = {};
checkResult.value = Xmarks.gSettings.wizardSuppress;
var sb = Xmarks.Bundle();
var ret = ps.confirmCheck(window, sb.GetStringFromName("title.cancelsetup"),
sb.GetStringFromName("msg.cancelsetup"),
sb.GetStringFromName("msg.nowizard"),
checkResult);
Xmarks.gSettings.wizardSuppress = checkResult.value;
Xmarks.gSettings.majorVersion = 3;
return ret;
}
else
return true;
}
function OnWizardLoad(){
var wizard = document.documentElement;
var sb = Xmarks.Bundle();
if(window.arguments[1] !== undefined)
gWizardMode = window.arguments[1];
else
gWizardMode = "normal";
if(gWizardMode == "resetPIN"){
wizard.title = sb.GetStringFromName("wizard.resettitle");
wizard.goTo("resetPIN");
}
else if(gWizardMode == "askforPIN"){
wizard.title = sb.GetStringFromName("wizard.newtitle");
wizard.goTo("passwordTransition");
}
}
function HandleError(retval) {
var wizard = document.documentElement;
wizard.goTo("errorPage");
document.getElementById("errormsg").value = retval.msg;
var errmsg = retval.msg.replace(/ /g, "_");
gHelpUrl = Xmarks.Bundle().formatStringFromName("url.error", [errmsg], 1);
wizard.canAdvance = true;
}
function OnTransitionPageShow() {
/*
We've just gained control back from the web-based setup wizard.
1) Confirm that we can log in.
2) Determine whether there are profiles.
3) Determine whether there are server-side bookmarks.
*/
// There is a timing issue; sometimes this doesn't get called first
OnWizardLoad();
if(gWizardMode != "normal")
return;
var spinner = document.getElementById("spinner");
var status = document.getElementById("statusLabel");
var wizard = document.documentElement;
wizard.canAdvance = false;
document.getElementById("profileMenuList").value = String(Xmarks.gSettings.viewId);
Xmarks.FetchAccountStatus("bookmarks", status, spinner, FetchedStatus);
function FetchedStatus(response) {
if (response.status != 0) {
HandleError(response);
return;
}
gIsEmpty = response.isreset;
if("@mozilla.org/login-manager;1" in Components.classes){
wizard.getPageById("selectProfile").next = "syncPasswords";
}
else {
wizard.getPageById("selectProfile").next = gIsEmpty ?
"execute" : "selectSyncOption";
}
Xmarks.FetchProfileNames(status, spinner,
document.getElementById("profileMenuPopup"),
FetchedProfileNames);
}
function FetchedProfileNames(response) {
if (response.status != 0) {
HandleError(response);
return;
}
gHasProfiles = (response.count > 0);
gProfileNames = response.profiles;
// TODO: what should we do with this haveSynced
wizard.getPageById("transition").next =
(gHasProfiles && !Xmarks.gSettings.haveSynced) ?
"selectProfile" : wizard.getPageById("selectProfile").next;
wizard.canAdvance = true;
if(gWizardMode == "normal")
wizard.advance();
}
}
function ForgotPIN(){
var wizard = document.documentElement;
wizard.goTo("forgotPIN");
}
function ForgotPINAdvance(){
var wizard = document.documentElement;
var resetPIN = document.getElementById("forgotpinradio").selectedItem.value == "reset";
if(resetPIN){
wizard.currentPage.next = "resetPIN";
}
else {
Xmarks.gSettings.setSyncEnabled("passwords", false);
wizard.currentPage.next = gIsEmpty ?
"execute" : "selectSyncOption";
}
return true;
}
function ForgotPINRewind(){
var wizard = document.documentElement;
wizard.goTo('pinOld');
return false;
}
function ResetPINLoad(){
if(gWizardMode == "resetPIN"){
var wizard = document.documentElement;
var radio = document.getElementById("resetpinno");
radio.label = Xmarks.Bundle().GetStringFromName("wizard.changedmymind");
wizard.canAdvance = true;
wizard.canRewind = false;
}
}
function SyncPasswordsLoad(){
var wizard = document.documentElement;
wizard.canRewind = false;
}
function ResetPINRewind(){
var wizard = document.documentElement;
wizard.goTo('forgotPIN');
return false;
}
function ResetPINAdvance(){
var wizard = document.documentElement;
var resetPIN =
document.getElementById("resetpinradio").selectedItem.value == "1";
if(resetPIN){
Xmarks.gSettings.setMustUpload("passwords", true);
gWizardForgotPassword = true;
wizard.currentPage.next = "pinNew";
}
else {
if(gWizardMode == "normal"){
Xmarks.gSettings.setSyncEnabled("passwords", false);
wizard.currentPage.next = gIsEmpty ?
"execute" : "selectSyncOption";
}
else {
wizard.cancel();
}
}
return true;
}
function SyncPasswordAdvance() {
var wizard = document.documentElement;
var syncPassword =
document.getElementById("syncpasswordradio").selectedItem.value == "1";
if(syncPassword){
wizard.currentPage.next = "passwordTransition";
}
else {
Xmarks.gSettings.setSyncEnabled("passwords", false);
wizard.currentPage.next = gIsEmpty ?
"execute" : "selectSyncOption";
}
return true;
}
function OnPasswordTransitionPageShow() {
var spinner = document.getElementById("pin_spinner");
var status = document.getElementById("pin_statusLabel");
var wizard = document.documentElement;
wizard.canAdvance = false;
Xmarks.FetchAccountExtStatus("passwords", status, spinner,function(response){
if (response.status != 0) {
HandleError(response);
return;
}
gPasswordsNeedUpload = response.isreset || response.ispurged;
wizard.currentPage.next = gPasswordsNeedUpload ? "pinNew" : "pinOld";
wizard.canAdvance = true;
wizard.advance();
});
}
function NewPINRewind(){
if(gWizardMode == "resetPIN"){
var wizard = document.documentElement;
wizard.goTo("resetPIN");
return false;
}
else if(gWizardForgotPassword){
gWizardForgotPassword = false;
var wizard = document.documentElement;
wizard.goTo("resetPIN");
return false;
}
return GotoSyncPasswords();
}
function OldPinLoad(){
if(gWizardMode == "askforPIN"){
var wizard = document.documentElement;
wizard.canRewind = false;
}
}
function NewOrResetPassword(){
var wizard = document.documentElement;
var currpin = Xmarks.gSettings.pinNoPrompt;
if(currpin){
if(gWizardMode == "resetPIN"){
wizard.currentPage.label =
Xmarks.Bundle().GetStringFromName("wizard.resetpintitle");
}
else {
wizard.currentPage.label =
Xmarks.Bundle().GetStringFromName("wizard.newpintitle");
}
wizard.currentPage.next = "resetpinVerified";
}
else if(gWizardMode == "askforPIN"){
wizard.canRewind = false;
}
}
function NewPasswordAdvance(){
var wizard = document.documentElement;
var pin = document.getElementById("newpin").value;
var pin2 = document.getElementById("newpin2").value;
if(!pin || pin.length < 4 || pin.length > 255){
Xmarks.Alert(Xmarks.Bundle().GetStringFromName("error.pinWrongSize"));
return false;
}
if(!pin2 || pin != pin2){
Xmarks.Alert(Xmarks.Bundle().GetStringFromName("error.pinNoMatch"));
return false;
}
if(pin == Xmarks.gSettings.password){
Xmarks.Alert(Xmarks.Bundle().GetStringFromName("error.pinEqualsPassword"));
return false;
}
Xmarks.gSettings.pin = pin;
Xmarks.gSettings.rememberPin = document.getElementById("rememberPin").checked;
Xmarks.gSettings.setSyncEnabled("passwords", true);
if(gPasswordsNeedUpload){
Xmarks.gSettings.setMustUpload("passwords", true);
}
gWizardForgotPassword = false;
return true;
}
function OldPinAdvance(){
Xmarks.gSettings.rememberPin = document.getElementById("rememberPinOld").checked;
return true;
}
function VerifyPIN(){
var spinner = document.getElementById("vpin_spinner");
var status = document.getElementById("vpin_statusLabel");
var wizard = document.documentElement;
var pin = document.getElementById("oldpin").value;
wizard.canAdvance = false;
if(!pin || pin.length < 4 || pin.length > 255){
Xmarks.Alert(Xmarks.Bundle().GetStringFromName("error.pinWrongSize"));
wizard.canAdvance = true;
wizard.rewind();
return;
}
Xmarks.VerifyPINStatus(pin, status, spinner,function(response){
if (response.status != 0) {
Xmarks.Alert(Xmarks.Bundle().GetStringFromName("error.pinInvalid"));
wizard.canAdvance = true;
wizard.rewind();
return;
}
Xmarks.gSettings.pin = pin;
var lm = Date.now();
if (!this.lastModified || lm > this.lastModified) {
this.lastModified = lm;
var os = Cc["@mozilla.org/observer-service;1"]
.getService(Ci.nsIObserverService);
os.notifyObservers(null, "foxmarks-datasourcechanged",
lm + ";passwords");
}
wizard.canAdvance = true;
wizard.advance();
});
}
function PinVerifiedAdvance(){
Xmarks.gSettings.setSyncEnabled("passwords", true);
if(gPasswordsNeedUpload){
Xmarks.gSettings.setMustUpload("passwords", true);
}
if(gWizardMode == "normal")
return true;
else {
window.arguments[2].doSync = true;
window.close();
}
return true;
}
function GotoSyncPasswords(){
var wizard = document.documentElement;
wizard.goTo("syncPasswords");
return false;
}
function RelinkPinVerified(){
var wizard = document.documentElement;
if(gWizardMode == "normal"){
wizard.currentPage.next = gIsEmpty ?
"execute" : "selectSyncOption";
}
else {
var button = wizard.getButton('next');
button.label = Xmarks.Bundle().GetStringFromName("wizard.finished");
button.accesskey = Xmarks.Bundle().GetStringFromName("wizard.finished.accesskey");
button = wizard.getButton('cancel');
button.hidden = true;
button.disabled =true;
button = wizard.getButton('back');
button.hidden = true;
button.disabled =true;
}
}
function NewPinVerifiedAdvance(){
if(gWizardMode == "normal")
return true;
else {
window.arguments[2].doSync = true;
window.close();
}
return true;
}
function SetProfileValue() {
Xmarks.LogWrite("Setting profile value...");
Xmarks.gSettings.viewId = document.getElementById("profileMenuList").value;
Xmarks.gSettings.viewName = document.getElementById("profileMenuList").label;
Xmarks.LogWrite("Profle value is now " + Xmarks.gSettings.viewId);
}
function SyncOptionAdvance() {
var wizard = document.documentElement;
wizard.currentPage.next = SetupIsMerging() ? "mergeOption" : "execute";
return true;
}
function FoxmarksSetupHelp() {
if (gHelpUrl) {
Xmarks.OpenInNewWindow(gHelpUrl);
}
}
function SetupIsMerging() {
return !gIsEmpty &&
document.getElementById("localOrRemote").selectedItem.value == "merge";
}
// Skip over merge options if the user hasn't selected merge.
function SetupOptionNext() {
document.documentElement.getPageById("selectSyncOption").next =
SetupIsMerging() ? "mergeOption" : "execute";
return true;
}
function SetupShowExecutePage() {
var op;
var a = document.getElementById("localOrRemote").selectedItem.value;
var b = document.getElementById("mergeStart").selectedItem.value;
var desc = document.getElementById("readydesc");
if(Xmarks.gSettings.isSyncEnabled("passwords"))
desc.setAttribute("value", Xmarks.Bundle().
GetStringFromName("label.syncinitial"));
if (gIsEmpty) {
op = "msg.upload2";
} else {
if (a == "local") {
op = "msg.upload2";
} else if (a == "remote") {
op = "msg.download2";
} else {
if (b == "local") {
op = "msg.mergelocal";
} else {
op = "msg.mergeremote";
}
}
}
var datatype = "";
if(Xmarks.gSettings.isSyncEnabled("bookmarks") &&
Xmarks.gSettings.isSyncEnabled("passwords")){
datatype = Xmarks.Bundle().GetStringFromName("msg.merge.alldata");
} else if(Xmarks.gSettings.isSyncEnabled("bookmarks")){
datatype = Xmarks.Bundle().GetStringFromName("msg.merge.bookmarks");
} else {
datatype = Xmarks.Bundle().GetStringFromName("msg.merge.passwords");
}
document.getElementById("operation").value =
Xmarks.Bundle().formatStringFromName(op,[datatype],1);
var warning = document.getElementById("warning");
if (!gIsEmpty && a != "merge") {
if(warning.childNodes.length > 0){
warning.removeChild(warning.firstChild);
}
var wtext = document.createTextNode(
Xmarks.Bundle().formatStringFromName(op + ".warning",
[datatype], 1)
);
warning.appendChild(wtext)
warning.hidden = false;
} else {
warning.hidden = true
}
var profileMsg = document.getElementById("profileMsg");
if (gHasProfiles && Xmarks.gSettings.viewId) {
profileMsg.value = Xmarks.Bundle().formatStringFromName("msg.profilemsg",
[gProfileNames[String(Xmarks.gSettings.viewId)]], 1);
profileMsg.hidden = false;
} else {
profileMsg.hidden = true;
}
}
function SetupPerformSync() {
var retval = {}
var args = {};
var a = document.getElementById("localOrRemote").selectedItem.value;
var b = document.getElementById("mergeStart").selectedItem.value;
args.merge = SetupIsMerging();
args.remoteIsMaster = gIsEmpty ? false :
(args.merge ? (b == "remote") : (a == "remote"));
SetupPerformAction("initialSync", retval, args);
if (!retval.status) {
return true;
} else {
Xmarks.Alert(Xmarks.Bundle().formatStringFromName("msg.syncfailed",
[retval.msg], 1));
}
return false;
}
function SetupPerformAction(action, retval, args) {
var win = window.
openDialog("chrome://foxmarks/content/foxmarks-progress.xul",
"_blank", "chrome,dialog,modal,centerscreen", action, retval, args);
if (retval.helpurl) {
openDialog("chrome://browser/content/browser.xul", "_blank",
"chrome,all,dialog=no", retval.helpurl);
retval.status = -1;
retval.msg = Xmarks.Bundle().GetStringFromname("msg.cancelled");
}
return;
}
function SetupOnWizardFinish() {
Xmarks.gSettings.majorVersion = 3;
var fms = Cc["@foxcloud.com/extensions/foxmarks;1"].
getService(Ci.nsIFoxmarksService);
fms.launchSuccessPage();
return true;
}
function OnPageShow(pageId) {
var attrs = [];
attrs.push("app=" + "jezebel");
attrs.push("mid=" + Xmarks.gSettings.machineId);
attrs.push("sess=" + Xmarks.gSettings.sessionID);
attrs.push("page=" + pageId);
attrs.push("username=" + Xmarks.gSettings.username);
attrs.push("no_cache=" + Date.now().toString(36));
attrs.push("manual=" + window.arguments[0]);
var query = attrs.join("&");
var img = document.getElementById(pageId + "Ping");
img.src = Xmarks.gSettings.httpProtocol + "tr.xmarks.com/tracking/impressions.gif?" + query;
}
function FoxmarksMoreSecurityInfo(){
window.openDialog(
"chrome://foxmarks/content/foxmarks-moresecurityinfo.xul",
"_blank",
"chrome,dialog,modal,centerscreen"
);
}